nexus6 刷 LineageOS 17.1 实战

您所在的位置:网站首页 360n6pro 刷机 nexus6 刷 LineageOS 17.1 实战

nexus6 刷 LineageOS 17.1 实战

2023-11-10 09:05| 来源: 网络整理| 查看: 265

为啥要搞机

最近准备找工作,想想自己工作几年来做了不少项目,也从中学到了不少东西。但是总是忙于实现各种业务逻辑,修复各种 BUG ,从来没有静下心来,好好地整理一下自己学到的知识点。

这就造成了一个问题,虽然我确实完成了客户需求,也解决了不少 BUG 。但是对于系统的一些模块,我都只有粗浅的了解,并没有真正深入去学习整个模块的架构,以及其中的整个工作原理。

这样其实对于自己个人的成长是非常不利的,毕竟,对于程序员而言,实现业务逻辑只是最基础的要求。真正区分程序员能力的,还是要看他的架构思想,对整个系统及框架的把控能力。

所以,必须得跳出舒适圈,要先逼自己一把,从写文章开始。

既然从事 Android framework 层开发,没什么比自己搞一个系统更有意思的事了。一来,在搞机的过程中,不免会接触到各个系统模块,可以从中深入去研究这些模块的架构及原理。二来,把搞机过程中学到的知识整理成一篇博客,加深自己对系统的了解,又能锻炼自己的总结和写作能力。三来,做出一个有个性的系统,不仅自己用起来爽,还能装装逼,一举三得,妙哉妙哉。

为啥选择LineageOS

LineageOS 是一个开源系统,前身是 CyanogenMod ,代码与 AOSP 基本相同,仅在上面做了一点改动。能够支持更多的机型,门槛更低。所以选择它作为搞机的系统。

此外,在公司的工作中,我陆续参与过 Android 4.4、5.1、7.1、8.1 的系统开发,再玩一样的系统就没啥意思了。正好 lineageOS 最新开源的代码已经到了 17.1 ,对应于 Android 10 ,这样也能顺便研究下新版本的特性。

搞机前的准备

刷机之前,首先要先确认你的机器是否支持 LineageOS。

最简单的方式,就是到 LineageOS 官网 https://download.lineageos.org/,看有没有对应的机型信息。

如果有,恭喜你,直接下载 recovery 镜像和固件包就行了。我

用来调试的机器是 google 亲儿子 nexus 6,所以下载的就是 shamu 对应的包。刷机这一块我不多讲,百度就有了,主要流程就是先刷 recovery,然后再通过线刷或卡刷下载固件包,就 ok 了。

如果对应机型在 LineageOS 官网上没有相应的包,理论上也是有可能刷这个系统的,但是我对刷机这一块了解得不多,具体可以自行百度。

下载源码

首先提醒一下,如果要下载和编译源码,最好预留 200G 以上的空间。(我这份代码才编译了两三次,目前占用的空间已经达到了 147G!)

源码的下载,直接参考清华的源就行了:lineageOS 源代码镜像使用帮助

当然,也可以直接到 github 上下载:LineageOS/android

注意,这里由于下载的是 17.1 的源码,要修改一下清华源中初始化仓库的指令:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-17.1

另外,我初始化仓库后,.repo 目录下是没有 manifest.xml 这个文件的,所以清华源中修改 repo 实际要修改的是 .repo/manifest/default.xml 这个文件。

另外,这里强调一下,repo 的修改,一定要严格对照清华源的修改去作改动,否则后面编译还会遇到不少的坑。说起来都是泪,就因为 repo 的修改有问题,导致我后面编译遇到了不少的坑,断断续续浪费了我几天的时间 /(ㄒoㄒ)/~~

这里大家可以参考下我的改动

其余的,按照清华源的操作来就行了。

PS:由于源码有几十 G,拉取的耗时很长,最好选择半夜或者大清早去下载源码。

编译源码

按照清华源的操作,repo sync执行完后,并不代表可以直接编译固件了,还需要拉取 kernel、device、vendor 下对应机型的代码,才能完成最终的编译。

我的调试机是 nexus6,执行的操作如下:

在 /kernel/moto/shamu/ 下拉取代码:LineageOS/android_kernel_moto_shamu

在 /device/moto/shamu/ 下拉取代码:LineageOS/android_device_moto_shamu

在 /vendor/motorola/ 下拉取代码:TheMuppets/proprietary_vendor_motorola

其他的机型,可以自行在 github

上(https://github.com/LineageOS)搜索对应机型的关键字,找到对应的仓库进行下载。

拉取机型对应的代码后,执行 source build/envsetup.sh。

接着,不是像平时 Android 源码那样执行 lunch 选择编译的机型和版本,而是使用 LineageOS 的 breakfast 指令,选择相应的机型(我使用的 nexus6 选择的是 lineage_shamu-userdebug)。

最后再执行 brunch 指令,再选择机型后,开始编译,需要好几个小时才能编译成功。

PS:其实以上拉取代码的操作,如果不执行提前执行,在编译过程中都是会有相应提示的,我就是在编译过程中提示各种各样的错后,自己去对应仓库拉取代码的,中间走了很多弯路。提前下载好可以省去许多麻烦,如果自己手动拉也没关系,编译过程根据提示下载就行了。

刷机

由于之前已经刷过 recovery 了,直接 adb reboot bootloader,进入 recovery 模式。

选择线刷,再执行 adb 指令: adb sideload out/target/product/shamu/lineage-17.1-20200512-UNOFFICIAL-shamu.zip,将固件包下载到机器上,忽略签名,重启。

一切搞定,开始愉快地玩机。。。吧



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3